package com.hlkj.pay.app.merchant;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import com.hlkj.framework.common.pojo.CommonResult;
import com.hlkj.pay.dto.merchant.report.*;
import com.hlkj.pay.vo.merchant.req.report.MerchantReportApproveReq;
import com.hlkj.pay.vo.merchant.req.report.MerchantReportReq;
import com.hlkj.pay.vo.merchant.resp.report.MerchantReportResp;
import com.hlkj.pay.vo.openapi.merchant.req.report.OpenApiMerchantReportQueryReq;
import com.hlkj.pay.vo.openapi.merchant.req.report.OpenApiMerchantReportReq;

/**
 * @author HlpayTeam
 * @date 2024/12/20 13:18
 */
public interface IMerchantReportAppService {
    /**
     *
     * @param merchantReportReq
     * @return
     */
    CommonResult<Long> saveReport(MerchantReportReq merchantReportReq);

    /**
     *
     * @param merchantReportReq
     * @return
     */
    CommonResult<MerchantReportDto> submitReport(MerchantReportReq merchantReportReq);
    /**
     *
     * @param merchantReportReq
     * @return
     */
    CommonResult<MerchantReportDto> submitReport(OpenApiMerchantReportReq merchantReportReq);

    /**
     *
     * @param id
     * @return
     */
    CommonResult<MerchantReportResp> merchantReportInfo(Long id);

    /**
     *
     * @param merchantReportApproveReq
     * @return
     */
    CommonResult<Void> platApprove(MerchantReportApproveReq merchantReportApproveReq);

    /**
     *
     * @param id
     * @return
     */
    CommonResult<Void> delete(Long id);

    /**
     *
     * @param id
     */
    void processAccessMessage(MerchantReportConsumerDto merchantReportConsumerDto);

    /**
     *
     * @param merchantReportSmsSendDto
     * @return
     */
    CommonResult<Void> merchantReportSmsSend(MerchantReportSmsSendDto merchantReportSmsSendDto);
    /**
     *
     * @param merchantReportSmsCodeDto
     * @return
     */
    CommonResult<Void> merchantReportSmsCode(MerchantReportSmsCodeDto merchantReportSmsCodeDto);

    /**
     *
     * @param id
     * @return
     */
    CommonResult<MerchantReportBalanceDto> merchantReportBalance(Long id);

    /**
     *
     * @param id
     * @return
     */
    CommonResult<Void> merchantReportAllot(Long id);

    /**
     *
     * @param accessQueryReq
     * @return
     */
    CommonResult<MerchantReportDto> reportDetail(OpenApiMerchantReportQueryReq accessQueryReq);

    CommonResult<String> getSignUrl(Long id);
}
